/** 生成随机字符串
 * @param n 随机生成位数
 * @param type 随机生成的参数类型，letter 只生成字母， number 只生成数字， all 包含字母数字
 * @param repeat 是否可重复
 * @returns 随机生成的指定位数的字符串
 */
type Types = 'all' | 'letter' | 'number'
const RandomString = (n?: number, type: Types = 'all', repeat = true) => {
  n = n || 32
  const t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
  const str =
    type == 'all' ? t : type == 'letter' ? t.slice(0, 52) : t.slice(52, 62)
  const strLength = str.length
  let res = ''
  while (res.length < n) {
    const tRes = str.charAt(Math.floor(Math.random() * strLength))
    if (repeat) {
      res += tRes
    } else {
      if (res.indexOf(tRes) == -1) {
        res += tRes
      }
    }
  }
  return res
}
export default RandomString
